package cn.pugle.mianshi.thread1To10;

import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.results.RunResult;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

import java.util.Collection;
import java.util.concurrent.TimeUnit;

/**
 * @author tzp
 * @since 2018/12/23
 */
@Warmup(iterations = 1)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public class Benchmark1To10 {

    public static void main(String[] args) throws RunnerException {
        Options options = new OptionsBuilder()
                .include(Benchmark1To10.class.getSimpleName())
                .forks(5)
                .build();
        Collection<RunResult> results = new Runner(options).run();
        System.out.println(results.iterator().next());
    }

//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen1() {
//        //ps 原来这些类里写的是static变量, 这样benchmark就出错了
//        new PrintToTen1().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen2() {
//        new PrintToTen2().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen3() {
//        new PrintToTen3().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen4() {
//        new PrintToTen4().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen5() {
//        new PrintToTen5().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen6() {
//        new PrintToTen6().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen6a() {
//        new PrintToTen6a().run();
//    }
//
//    @Benchmark
//    @Measurement(iterations = 2)
//    public void PrintToTen7() {
//        new PrintToTen7().run();
//    }

    @Benchmark
    @Measurement(iterations = 30)
    public void PrintToTen3a() {
        new PrintToTen3a().run();
    }
}
